﻿
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

namespace XF.Meeting.Entity.CommonEntity.wx
{

    public class Attendees
    {
        /// <summary>
        /// 日程参与者列表。最多支持2000人（否）
        /// </summary>
        public string userid { get; set; }
    }

    public class Reminders
    {
        /// <summary>
        /// 是否需要提醒。0-否；1-是
        /// </summary>
        public int is_remind { get; set; } = 0;
        /// <summary>
        /// 日程开始（start_time）前多少秒提醒，当is_remind为1时有效。
        //        例如： 300表示日程开始前5分钟提醒。目前仅支持以下数值：
        //0 - 事件开始时
        //300 - 事件开始前5分钟
        //900 - 事件开始前15分钟
        //3600 - 事件开始前1小时
        //86400 - 事件开始前1天
        /// </summary>
        public int remind_before_event_secs { get; set; } = 900;
        /// <summary>
        /// 是否重复日程。0-否；1-是
        /// </summary>
        public int is_repeat { get; set; } = 0;
        /// <summary>
        /// 重复类型，当is_repeat为1时有效。目前支持如下类型：
        //0 - 每日
        //1 - 每周
        //2 - 每月
        //5 - 每年
        //7 - 工作日
        /// </summary>
        public int repeat_type { get; set; }
        /// <summary>
        /// 重复结束时刻，Unix时间戳。不填或填0表示一直重复
        /// </summary>
        public int repeat_until { get; set; }
        /// <summary>
        /// 是否自定义重复。0-否；1-是
        /// </summary>
        public int is_custom_repeat { get; set; } = 0;
        /// <summary>
        /// 重复间隔
        //        仅当指定为自定义重复时有效
        //        该字段随repeat_type不同而含义不同
        //例如：
        //repeat_interval指定为3，repeat_type指定为每周重复，那么每3周重复一次；
        //repeat_interval指定为3，repeat_type指定为每月重复，那么每3个月重复一次
        /// </summary>
        public int repeat_interval { get; set; }
        /// <summary>
        /// 每周周几重复
        //仅当指定为自定义重复且重复类型为每周时有效
        //取值范围：1 ~ 7，分别表示周一至周日
        /// </summary>
        public List<int> repeat_day_of_week { get; set; }
        /// <summary>
        /// 每月哪几天重复
        //仅当指定为自定义重复且重复类型为每月时有效
        //取值范围：1 ~ 31，分别表示1 ~31号
        /// </summary>
        public List<int> repeat_day_of_month { get; set; }
        /// <summary>
        /// 每月哪几天重复
        //仅当指定为自定义重复且重复类型为每月时有效
        //取值范围：1 ~ 31，分别表示1 ~31号
        /// </summary>
        public int timezone { get; set; }
    }

    public class Schedule
    {
        /// <summary>
        /// 组织者
        //不多于64字节
        /// </summary>
        public string organizer { get; set; }
        /// <summary>
        /// 企业微信日程id
        /// </summary>
        public string schedule_id { get; set; }
        
        /// <summary>
        /// 日程开始时间，Unix时间戳
        /// </summary>
        public int start_time { get; set; }
        /// <summary>
        /// 日程结束时间，Unix时间戳
        /// </summary>
        public int end_time { get; set; }
        /// <summary>
        /// 日程参与者列表。最多支持2000人
        /// </summary>
        public List<Attendees> attendees { get; set; } = new List<Attendees>();
        /// <summary>
        /// 日程标题。0 ~ 128 字符。不填会默认显示为“新建事件”
        /// </summary>
        public string summary { get; set; }
        /// <summary>
        /// 日程描述 不多于512个字符
        /// </summary>
        public string description { get; set; }
        /// <summary>
        /// 提醒相关信息
        /// </summary>
        public Reminders reminders { get; set; }
        /// <summary>
        ///日程地址不多于128个字符
        /// </summary>
        public string location { get; set; }
        /// <summary>
        /// 日程所属日历ID。该日历必须是access_token所对应应用所创建的日历。
        //        注意，这个日历必须是属于组织者(organizer)的日历；
        //如果不填，那么插入到组织者的默认日历上。
        //第三方应用必须指定cal_id
        //不多于64字节
        /// </summary>
        public string cal_id { get; set; }
    }

    public class WechatSchedule
    {
        /// <summary>
        /// 日程信息（是）
        /// </summary>
        public Schedule schedule { get; set; }
        /// <summary>
        /// 授权方安装的应用agentid。仅旧的第三方多应用套件需要填此参数（否）
        /// </summary>
        public int agentid { get; set; }
    }

}